﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DominioSATT;
using RepositorioSATT.Conexiones;

namespace RepositorioSATT
{
    public class ArbitroRepositorio:IArbitroRepositorio,IMapeadorFila<Arbitro>
    {
        protected Conexion conn;
        protected String sql;

        public ArbitroRepositorio()
        {
            conn = new Conexion();
        }

        #region IArbitroRepositorio Members

        public void Agregar(DominioSATT.Arbitro Arbitro)
        {
            string Valores = Arbitro.Dni + "," + Arbitro.Club.Idclub + "," + Arbitro.Estado.ToString();
            conn.Agregar("PersonaClub", "Dni,IdClub,Estado", Valores);
        }

        public Arbitro Buscar(int Dni)
        {
            sql = " Select * From Persona Where Dni = " + Dni;
            return this.MapearTabla(conn.Buscar(sql));
        }

        #endregion

        #region IMapeadorFila<Arbitro> Members

        public Arbitro MapearTabla(System.Data.DataRow fila)
        {
            Arbitro Retorno = null;
            if (fila != null)
            {
                //Atributos del Agregate Root
                Pais nNac = new Pais();
                int DNI = (fila.IsNull("Dni") == true ? 0 : Convert.ToInt32(fila["Dni"]));
                string Nombre = (fila.IsNull("Nombre") == true ? string.Empty : Convert.ToString(fila["Nombre"]));
                string Apellido = (fila.IsNull("Apellido") == true ? string.Empty : Convert.ToString(fila["Apellido"]));
                DateTime FechaNacimiento = (fila.IsNull("FechaNac") == true ? DateTime.Now : Convert.ToDateTime(fila["FechaNac"]));
                string Tipo = (fila.IsNull("Tipo") == true ? string.Empty : Convert.ToString(fila["Tipo"]));
                string Sexo = (fila.IsNull("Sexo") == true ? string.Empty : Convert.ToString(fila["Sexo"]));
                bool Estado = (fila.IsNull("Estado") == true ? false : Convert.ToBoolean(fila["Estado"]));
                int DniTutor = (fila.IsNull("Tutor") == true ? 0 : Convert.ToInt32(fila["Tutor"]));
                string Relacion = (fila.IsNull("Relacion") == true ? string.Empty : Convert.ToString(fila["Relacion"]));
                IPaisRepositorio PaisRepo = new UbicacionRepositorio();
                nNac.Nombre = PaisRepo.ObtenerPais(Convert.ToInt32(fila["IdPais"]));

                //Atributos del Value Object Domicilio
                Localidad nLoc = new Localidad();
                Pais nPais = new Pais();
                Provincia nProv = new Provincia();
                ILocalidadRepositorio Ubicacion = new UbicacionRepositorio();
                nLoc.Nombre = Ubicacion.ObtenerLocalidad(Convert.ToInt32(fila["IdLocalidad"]));
                nProv.Nombre = Ubicacion.ProvinciaLocalidad(Convert.ToInt32(fila["IdLocalidad"]));
                nPais.Nombre = Ubicacion.PaisLocalidad(Convert.ToInt32(fila["IdLocalidad"]));

                string Direccion = (fila.IsNull("Direccion") == true ? string.Empty : Convert.ToString(fila["Direccion"]));
                Domicilio domicilio = new Domicilio(nPais, nProv, nLoc, Direccion);

                //Atributos del Value Object Contacto
                string Telefono = (fila.IsNull("Telefono") == true ? string.Empty : Convert.ToString(fila["Telefono"]));
                string Celular = (fila.IsNull("Celular") == true ? string.Empty : Convert.ToString(fila["Celular"]));
                string Email = (fila.IsNull("Email") == true ? string.Empty : Convert.ToString(fila["Email"]));
                Contacto contacto = new Contacto(Telefono, Celular, Email);

                Persona nPersona = new Persona(DNI, Nombre, Apellido, FechaNacimiento, Tipo, nNac, contacto, domicilio, Sexo, Estado);
                Retorno = new Arbitro(nPersona, null, null);
            }
            return Retorno;
        }

        #endregion
    }
}
